(DEFINE (十六进制数 S)
 (LET ((ST '始) (C NIL) (NL NIL) (RES NIL))
  (BLOCK TR-STR
   (TRAVEL S 'FOR-INDEX I (SETF C (ELT S I))
    (COND ((EQL ST '始) (COND ((读正负号 C) (SETF ST '符号)) (T (RETURN-FROM 十六进制数 NIL))))
     ((EQL ST '符号) (COND ((读十六进制数 C) (SETF ST '整数)) ((读点 C) (SETF ST '点)) (T (RETURN-FROM 十六进制数 NIL))))
     ((EQL ST '整数)
      (COND ((读点 C) (SETF ST '小数)) ((读十六进制数 C) (SETF ST '整数)) ((读^ C) (SETF ST '指数)) (T (RETURN-FROM 十六进制数 NIL))))
     ((EQL ST '小数) (COND ((读^ C) (SETF ST '指数)) ((读十六进制数 C) (SETF ST '小数)) (T (RETURN-FROM 十六进制数 NIL))))
     ((EQL ST '指数) (COND ((读正负号 C) (SETF ST '指数符号)) ((读十六进制数 C) (SETF ST '指数数)) (T (RETURN-FROM 十六进制数 NIL))))
     ((EQL ST '指数符号) (COND ((读十六进制数 C) (SETF ST '指数数)) (T (RETURN-FROM 十六进制数 NIL))))
     ((EQL ST '指数数) (COND ((读十六进制数 C) (SETF ST '指数数)) (T (RETURN-FROM 十六进制数 NIL))))
     ((EQL ST '点) (COND ((读十六进制数 C) (SETF ST '小数)) (T (RETURN-FROM 十六进制数 NIL)))) (T (RETURN-FROM 十六进制数 NIL)))))
  (IF (OR (EQL ST '指数数) (EQL ST '整数) (EQL ST '小数)) ST NIL)))